package com.example.security.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 数据权限注解
 * 用于标注需要进行数据权限控制的方法
 * 主要用于控制用户只能访问其权限范围内的数据
 */
@Target(ElementType.METHOD)  // 注解只能用于方法
@Retention(RetentionPolicy.RUNTIME) // 注解在运行时可见
public @interface DataPermission {
    /**
     * 部门表别名,用于SQL拼接
     * 例如: SELECT * FROM sys_dept d WHERE d.dept_id IN (...)
     */
    String deptAlias() default "";  

    /**
     * 用户表别名,用于SQL拼接
     * 例如: SELECT * FROM sys_user u WHERE u.user_id = ?
     */
    String userAlias() default "";  

    /**
     * 是否只能查看自己的数据
     * true: 只能查看自己创建的数据
     * false: 可以查看权限范围内的所有数据
     */
    boolean self() default false;   
} 